home *** CD-ROM | disk | FTP | other *** search
/ Power Programmierung 2 / Power-Programmierung CD 2 (Tewi)(1994).iso / c / library / dos / diverses / cexpress / system / allopage.asm next >
Encoding:
Assembly Source File  |  1989-05-03  |  1.2 KB  |  46 lines

  1. ;unsigned short  allocate_pages(number);
  2. ;  unsigned short  number;
  3.  
  4.     EXTRN  _memory_model:byte
  5.     EXTRN  _error_code:byte
  6.  
  7. _TEXT    SEGMENT BYTE PUBLIC 'CODE'
  8.     ASSUME CS:_TEXT
  9.     PUBLIC _allocate_pages
  10. _allocate_pages proc near
  11.     mov  ah,43h        ;function number
  12.     mov  bx,sp        ;BX pts to stack
  13.     cmp  _memory_model,0    ;near or far?
  14.     jle  begin        ;jump if near
  15.     inc  bx            ;else add 2 to BX
  16.     inc  bx            ;
  17. begin:    mov  bx,ss:[bx+2]    ;get number of pages
  18.     int  67H        ;EMS interrupt
  19.     mov  _error_code,0    ;0 = success!
  20.     or   ah,ah        ;0 if successful
  21.     jz   L1            ;jump if no error
  22.     inc  _error_code    ;1 = software malfunction
  23.     cmp  ah,80h        ;test
  24.     je   L1            ;jump if error 1
  25.     inc  _error_code    ;2 = hardware malfunction
  26.     cmp  ah,81h        ;test
  27.     je   L1            ;jump if error 2
  28.     inc  _error_code    ;3 = all handles used
  29.     cmp  ah,85h        ;test
  30.     je   L1            ;jump if error 3
  31.     inc  _error_code    ;4 = too few expanded mem pages
  32.     cmp  ah,87h        ;test
  33.     je   L1            ;jump if error 4
  34.     inc  _error_code    ;5 = too few available pages
  35.     cmp  ah,88h        ;test
  36.     je   L1            ;jump if error 5
  37.     inc  _error_code    ;6 = asked for zero pages
  38. L1:    mov  ax,dx        ;set handle for return
  39.     cmp  _memory_model,0    ;quit
  40.     jle  Quit        ;
  41.     db   0CBh        ;RET far
  42. Quit:    ret            ;RET near
  43. _allocate_pages endp
  44. _TEXT    ENDS
  45.     END
  46.